var container;
$(document).ready(function(){            
    container = document.body;    
    $.data(container, "map", new Map());
    $.data(container, "newOpinionMap", new Map());
    $.data(container, "features", new Features()); 
    $.data(container, "vote", new Vote()); 
    $.data(container, "loader", $("<img/>").attr({
	"src" : "/themes/miky/images/icons/upload.gif", 
	"alt" : "loading", 
	"class" : "loader"
    })); 
    if ($("#googleMap").length){
	$.data(container, "map").init();
    }
    if ($("#newOpinion").length){
	$.data(container, "features").setOptions({
	    map : {
		hiddenContaner : "#opinionFeatures"
	    },
	    image : {
		hiddenContaner : "#opinionFeatures"
	    },
	    video : {
		hiddenContaner : "#opinionFeatures"
	    }
	});
	$.data(container, "newOpinionMap").setOptions({
	    element : "newOpinionMap"
	}).init();
	
    }
    if ($("#advImages").length) {
	$.data(container, "imgSlider", $("#advImages").bxSlider());  	
    }
    if ($("#advVideos").length){
	$.data(container, "videoSlider", $("#advVideos").bxSlider());  	
    }
    $("a.close").live("click", function(e){
	$(this).parent().hide();
    });
    $("#mapSearch").submit(function(e){
	e.preventDefault();	
	var address = $(this).find("input[type=text]");	
	if (!address.length || address.val().length < 3) {
	    showStatusMessage("Пожалуйста введите корректный адрес", "error");	    
	    return false;
	}
	if ($.data(container, "map")) {
	    $.data(container, "map").searchAndDisplay(address.val());	
	}
	return false;
    });    
    $("#opinionMapSearch").submit(function(e){
	e.preventDefault();	
	var address = $(this).find("input[type=text]");	
	if (!address.length || address.val().length < 3) {
	    showStatusMessage("Пожалуйста введите корректный адрес", "error");	    
	    return false;
	}
	if ($.data(container, "newOpinionMap")) {
	    $.data(container, "newOpinionMap").searchAndDisplay(address.val());	
	}
	return false;
    });    
    
    $("#mapForm").submit(function(e){
	e.preventDefault();	
	var $submitBtn = $(this).find(":submit");
	disableElement($submitBtn);
	$.ajax({
	    url: "/ajax/mapuploadremote",
	    dataType: "json",
	    data : $(this).serialize(),
	    success : function(data){
		enableElement($submitBtn);
		if (data.error !== undefined) {
		    showStatusMessage(data.error, "error");
		    return;
		}	
		$.data(container, "features").update(data, 'map');		
	    },
	    error : errorFunction
	});
	return false;
    });    

    $("a[rel^='prettyPhoto']").prettyPhoto({
	social_tools:false
    });
    
    if ($("#category").length) {
	$("#category").autocomplete("/autocomplete/category",{
	    width : $('#category').outerWidth()-2,
	    dataType : "json", 
	    max : 10, 	
	    parse: function(data) {			
		var parsed = [];
		if (data === null) {
		    data = [];
		}
		for (var i = 0; i < data.length; i++) {
		    parsed[parsed.length] = {
			data: data[i],
			value: data[i].title,
			result: data[i].title
		    };
		}
		return parsed;
	    },
	    formatItem: function(row, i, max) {
		return row.title;
	    }
            
	}).wrap("<div class='ac_box'></div>").after("<img class=\"ac_list_b\" alt=\"V\" src=\"/themes/miky/images/icons/sel_b.png\" />").result(function(){
	    $(this).parent().find(".find_icon").attr({
		"src" : "/themes/miky/images/icons/sel_b.png",
		"class" : "ac_list_b"
	    });          

	}).result(function(event, row){	        
	    if ($("#categoryId").length) {
		$("#categoryId").val(row.id);
	    }	
	});
	$('#category').parent().find('.ac_list_b').click(function(){	
	    var category = $('#category');	
	    category.searchAndShow('alltop') 
	    .parent().find('.ac_list_b').attr({
		'src':'/themes/miky/images/icons/search_icon.png',
		'class':'find_icon'
	    }); 
	    return false;       
	});
    }
    if ($("#upImageLocal").length) {
	$("#upImageLocal").ajaxForm({
	    dataType: "json",
	    resetForm : true,
	    success: function(data) {
		enableElement($("#imageUpButton"));
		if (data.error !== undefined) {
		    showStatusMessage(data.error, "error");
		    return;
		}
		$.data(container, "features").update(data, "image");		  
	    },
	    beforeSubmit : function(arr, $form, options) { 
		disableElement($("#imageUpButton"));		
	    }
	}); 
    }
    
    $("ul.tabs li").live("click", function(e){	
	$(this).parent().children().removeClass("active");
	$(this).addClass("active");
    });
    
    $("a.showOpinion").click(function(e){
	e.preventDefault();	
	var $this = $(this);
	var parent = $(this).closest("div.recordRow");
	if (!parent.length) {
	    showStatusMessage("Елемент не найден", "error");
	    return;
	}
	var match = /opinion_(\d+)/i.exec(parent.attr("id"));
	if (!match[1]) {
	    return;	    
	}	
	disableElement($this);
	var id = parseInt(match[1]);
	$.get("/ajax/showopinion", {
	    id : id
	}, function(data){
	    enableElement($this);
	    if (data && data.error !== undefined) {
		showStatusMessage(data.error, "error");
		return;
	    }	    	    
	    $("#showOpinion").html(data.result);	    
	    showModal("#showOpinion");
	    if ($("div.opinionImage").length) {
		$("div.opinionImage").bxSlider();
	    }
	    if ($("div.opinionVideo").length) {
		$.data(container, "opinionVideo", $("div.opinionVideo").bxSlider());		
	    }
	    if ($("div#opinionMap").length) {
		$.data(container, "opinionMap", new Map());
		$.data(container, "opinionMap").setOptions({
		    element : "opinionMap"
		}).init();		
	    }
	}, "json");
    });
    $(".reply").live("click", function(){
	if ($("#commentForm").length) {
	    var parent = $(this).closest("div.recordRow");	    
	    var match = parent.attr('id').match(/comment_(\d*)/i);
	    var replyForm = $("div#replyForm_" + match[1], parent);
	    if ($(replyForm).length) {
		var el = $("#commentForm").clone().addClass("ajaxSubmit");
		$(replyForm).html(el);
		$("input[name=parent_id]", replyForm).val(match[1]);
		if ($(this).hasClass("quote")) {
		    $("textarea[name=content]", replyForm).val("[quote]" + $.trim($("div.msgContent", parent).html()) + "[/quote]");
		}
	    }
	}
    });
    $("form.ajaxSubmit").live("submit", function(e){
	var $this = $(this);
	var parent = $(this).parent();
	e.preventDefault();	
	$.post('/comment/add', $(this).serialize(), function(data){
	    if (data.error !== undefined) {
		showStatusMessage(data.error, "error");
	    }	    
	    parent.next("div").append(data.result);
	    $this.remove();
	    toEl("#" + $(data.result).attr("id"));
	}, 'json');
    });    
    $("div#fastReg form").submit(function(e){	
	e.preventDefault();	
	if(!$("div#fastReg form").valid()){
	    return false;
	}
	$(this).prepend($.data(container, "loader"));
	var $this = $(this);
	$.ajax({
	    url:"/auth/register",
	    type:"post",
	    dataType:"json",
	    data:$this.serialize(),
	    success:function(data){
		if(data.error !== undefined){
		    showStatusMessage(data.error, "error");		    
		}
		if(data.success !== undefined){
		    reload();
		}
	    }
	}
	);
	return false;
    });
    $("div#userLogin form").submit(function(e){	
	e.preventDefault();	
	if(!$("div#userLogin form").valid()){
	    return false;
	}
	$(this).prepend($.data(container, "loader"));
	var $this = $(this);
	$.ajax({
	    url:"/auth/login",
	    type:"post",
	    dataType:"json",
	    data:$this.serialize(),
	    success:function(data){
		if(data.error !== undefined){
		    showStatusMessage(data.error, "error");		    
		}
		if(data.success !== undefined){
		    reload();
		}
	    }
	}
	);
	return false;
    });
    if($("form.needValidate").length){
	$("form.needValidate").validate();
    }       

});
